1. Technical Field
The present invention relates in general to the computer programming. More specifically, the present invention relates to the field of object oriented methods for creating and modifying software applications.
2. Background Art
The development of the EDVAC computer system of 1948 is often cited as the beginning of the computer era. Since that time computers have become indispensable in many fields of human endeavor including engineering design, machine and process control, and information storage and access. In the early days of computers, companies such as banks, industry, and the government would purchase a single computer which satisfied their needs, but by the early 1950""s many companies had multiple computers and the need to move data from one computer to another became apparent. At this time computer networks began being developed to allow computers to work together.
Computer networks are capable of performing jobs that no single computer could perform and they allow low cost personal computer systems to connect to larger systems to perform tasks that such low cost systems could not perform alone. In order for computer systems to cooperate in a network to perform some complex job, software must be developed which efficiently delegates parts of the chore or tasks to different computers in the network. One of the recent advances in the field of software development has been the emergence of object oriented programming technology.
The goal of using object-oriented programming is to create small, reusable sections of program code known as objects that can be quickly and easily combined and re-used to create new programs. This is similar to the idea of using the same set of building blocks again and again to create many different structures. The modular and re-usable aspects of objects typically speeds development of new programs, thereby reducing the costs associated with the development cycle. In addition, by creating and re-using a group of well-tested objects, a more stable, uniform, and consistent approach to developing new computer programs can be achieved.
Although object-oriented programming offers significant improvements over other programming types, program development still requires significant amounts of time and effort, especially if no preexisting objects are available as a starting point. Consequently, one approach has been to provide a program developer with a set of pre-defined, interconnected classes that create a set of objects. Such pre-defined classes and libraries are typically called object frameworks. Frameworks essentially provide a prefabricated structure for a working program by defining certain classes, class relationships, and methods that a programmer may easily use by appropriate subclassing to generate a new object-oriented program.
While object-oriented programming and the use of frameworks has greatly simplified the task of creating useful and efficient computer programs, some difficulties remain. For example, there are many times when a user needs to perform repetitive set of tasks need in a certain sequence to arrive at a desired outcome. Wizards are software utilities used by applications to help users perform a particular task. Wizards help users perform complex tasks by guiding the user in a step by step fashion. For example, wizards have been added to software applications to help users configure peripherals such as modems and printers. Such a wizard guides the user through each step, such as selecting installation options, selecting ports, installing necessary software driver, creating necessary links to other applications, and setting any other necessary parameters.
Typically, the wizard attempts to guide the user as much as possible. For example, instead of forcing the user to type in a cryptic and hard to remember parameter, the wizard provides a list of potentially acceptable parameters. As another example, the wizard may only provide as options those parameters that do not conflict with other applications and/or devices. In such a way, the wizard guides the user through the otherwise difficult process.
Wizards thus provide an improved user interface that allows users with less technical sophistication to efficiently configure and use their computer. Unfortunately, the widespread adoption of wizards in software applications has been limited by the time and difficulty involved in creating them. While a number of different application programming interfaces (APIs) are available for creating wizards, the content and capabilities of these interfaces are limited. In particular, wizard developers are still required to understand the specifics of these APIs in order to implement wizards. Thus, while these software development products assist in the creation of wizards, they still require extensive and detailed knowledge to use. Additionally, they typically require an extensive amount of custom coding for each wizard. This makes it difficult for even professional programers to add wizard functionality to their applications, and makes it almost impossible for less technically sophisticated end users to add or modify existing wizards on their own.
Thus, what is needed is an improved mechanism and method for facilitating the creation and customization of wizards in a wide variety of programming environments.
According to the present invention, an component based wizard creation mechanism provides an environment and set of facilities for creating and modifying wizards. The preferred embodiment wizard creation mechanism provides a WizardWizard mechanism for creating the skeleton of new wizard, a WizardDesigner mechanism for specializing and WizardMetaDataManager mechanism for persisting and retrieving created wizards. The WizardWizard guides the developer through a predetermined series of steps that are required to define a the basic components of a new wizard. The WizardDesigner takes these basic components and guides the developer through a specialization process that further customizes and defines the new wizard. In the preferred embodiment, the WizardWizard and the WizardDesigner create and specialize the target wizard from a component based Wizard framework. The use of the component based Wizard framework with the WizardWizard and WizardDesigner provide a customizable and extensible wizard creation solution to that has utmost functionality and flexibility to the users and developers.